#include<iostream>
#include<pthread.h>
#include<unistd.h>
#include<stdio.h>

using namespace std;

// 测试线程退出接口pthread_cancel(pthread_t thread)：通过线程标识符结束任意线程
//
// case_1.工作线程自己调
//
// case_2.主线程调，结束工作线程
//
// case_3.主线程调，结束自己线程
// 3.1 工作线程循环，主线程调用结束接口后还有代码
// 3.2 工作线程循环，。。。。。。。。。。没有代码
// 3.3 工作线程可以自己退出。

// 工作线程的入口函数
void* pthread_start(void* arg)
{
    // 工作线程
    int count = 30;
    while(count--)
    //while(1)
    {
        // 工作线程死循环不退出
        printf("I'm a word thread!\n");
        sleep(1);
    }
}

int main()
{
    //1.创建一个工作线程
    pthread_t tid;
    int ret = pthread_create(&tid, NULL, pthread_start, NULL);
    if(ret < 0)
    {
        cout << "pthread_create Error!" << endl;
        return 0;
    }
    getchar();   //作用：让主线程阻塞等待，当得到用户输入的字符后才能继续向下执行
    
    pthread_cancel(pthread_self());  //主线程终止自己线程

    sleep(1);
//    while(1)
//    {
//        printf("I'm a main thread! \n");
//        sleep(1);
//    }

    return 0;
}

